home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 6 / Amiga Format AFCD06 (Nov 1996, Issue 90).iso / serious / shareware / misc / editkeys / editkeys.doc < prev    next >
Text File  |  1995-10-15  |  24KB  |  547 lines

  1.  
  2.                 EditKeys v1.63
  3.                 --------------
  4.  
  5.                 © 1991-95 David Kinder
  6.                 ----------------------
  7.  
  8. Introduction
  9. ------------
  10.  
  11. Around late 1990, I was trying to find a program to allow me to edit the
  12. system keymap files. There were a few that let you put strings on keys, but
  13. none gave total control over all the features of keymaps. So I decided to
  14. write my own editor. I mean, how hard could it be..?
  15.  
  16. The result is EditKeys, a keymap editing program designed to work under
  17. AmigaDOS 1.3 and higher. EditKeys is written in machine code and compiled
  18. using HiSoft's Devpac v3 assembler, though it should not be that difficult
  19. to compile under other assemblers. EditKeys is freely distributable,
  20. provided that no more is charged than a nominal fee for copying and disk
  21. media. If you want to use a keymap created with EditKeys in a PD or
  22. commercial package then the only condition I impose is that I receive a
  23. credit somewhere in the program or its documentation.
  24.  
  25. Files
  26. -----
  27.     Program     - EditKeys
  28.               EditKeys.info
  29.     Documentation    - EditKeys.doc
  30.     Disk Libraries    - arp.library (must be in LIBS: for AmigaDOS 1.3)
  31.               asl.library (must be in LIBS: for AmigaDOS 2.0+)
  32.     Source files    - EditKeys.s
  33.               Graphics.s
  34.               xdef.i
  35.               xref.i
  36.               Tech.Notes
  37.  
  38. About EditKeys
  39. --------------
  40.  
  41. EditKeys allows you to edit or create keymap files (They are found in the
  42. Devs/Keymaps/ directory of the boot disk). If you don't know about these
  43. files, then perhaps I should explain.
  44.  
  45. When you press a key on the Amiga's keyboard, the key press is translated by
  46. the keymap file that the system is using. For instance, British Amigas use
  47. the keymap 'gb'. Different keymaps can be found on the system disks
  48. supplied with your Amiga. They are found in:
  49.  
  50.     AmigaDOS 1.3    Extras1.3:Devs/keymaps/
  51.     AmigaDOS 2.0    Extras2.0:Devs/Keymaps/
  52.     AmigaDOS 3.0    Storage3.0:Keymaps/
  53.  
  54. Under AmigaDOS 2.1 and higher keymaps have icons, and are loaded into the
  55. system with the Input prefs editor (or the SetKeyboard command). With
  56. earlier releases, keymaps are loaded with the SetMap program, found in the
  57. System drawer of the boot disk. If you load a keymap different to your
  58. native one, you will find typing some keys gives unexpected results
  59. (especially the non-alphanumeric keys (eg. [,;,# )).
  60.  
  61. Keymaps can be changed to give more radical results; you could redefine the
  62. numerical keypad to produce alphabetic characters if you wanted to, or you
  63. can configure keys to output strings (useful for disk-menus etc.).
  64.  
  65. Please note that any changes made using EditKeys do NOT come into effect
  66. until you load the keymap via the system software; only when you select
  67. 'Save' in EditKeys is a suitable keymap structure constructed and saved to
  68. disk so that AmigaDOS can use it.
  69.  
  70. Keymap Specifications
  71. ---------------------
  72.  
  73. At this point, perhaps I should define some of the terms I will use:
  74.  
  75.   Qualifier Key - CTRL, ALT or SHIFT keys. Do not produce output on their
  76.           own but qualify the output of other keys (eg Shift-f
  77.           produces 'F').
  78.  
  79.   Physical Key    - An actual key on the keyboard, the thing that you touch
  80.           when you type.
  81.  
  82.   Key        - A combination of a physical key and a qualifier, eg q is
  83.           a key, as is Shift-q, Alt-q, Shift-Alt-q, etc. Note that
  84.           Alt-q is an abreiviation for holding down the ALT key
  85.           while tapping the 'q' key.
  86.  
  87. Keymaps contain quite a lot of information, none of which appears in the user
  88. manuals but appears in the RKM under 'console.device' (Makes sense to put
  89. info about the keyboard in a programmer's manual eh?). Therefore I shall
  90. attempt to briefly describe what is possible.
  91.  
  92. Keys can be redefined to produce any character when pressed with one of the
  93. qualifiers, and also keys can produce strings of up to 32 characters.
  94. Physical keys with a STRING key on them may not have DEAD or MODIFIABLE keys
  95. on them (see below).
  96.  
  97. Some keys repeat when held down (eg all alphabetic keys), while others do not
  98. (eg the <RETURN> key). Physical keys which repeat are referred to as
  99. REPEATABLE (fairly obvious). Whether a key repeats or not is controlled by
  100. the keymap. Similarly, the keymap controls whether a key is CAPSABLE or not.
  101. When the 'Caps Lock' light is on, some keys produce their Shifted values (eg
  102. 'q'), while the numerical keys produce their normal values.
  103.  
  104. Some keys are DEAD, while others are MODIFIABLE. For an example of this, open
  105. a CLI window, then hold down ALT while tapping the 'f' key (From now on
  106. abrieviated to Alt-f); nothing happens. Now tap the 'a' key, the result is
  107. an a with an accent over it: 'á'. The key Alt-f is a DEAD key, while 'a' is a
  108. MODIFIABLE key. When you type Alt-f, the Amiga stores the deadkey, which it
  109. then uses to modify the output of the 'a' key. Not all keys are MODIFIABLE,
  110. Alt-f followed by 'q' just produces 'q'. A physical key with DEAD or
  111. MODIFIABLE keys on it may NOT have STRING keys on it.
  112.  
  113. There is a further limitation in that those physical keys that are not DEAD
  114. or MODIFIABLE use only 4 bytes for their definition, eg on the 'A' key on
  115. your keyboard there is 'a', 'A', 'æ' and 'Æ'. However, there are 8 different
  116. permutations of the Shift, Alt and Control qualifiers with the key, so not
  117. every combination of physical key with qualifier can be uniquely defined.
  118. Why didn't Commodore use 8 bytes for each key? (sigh). There is one other
  119. point; if a physical key has definitions for Shift and Alt (and thus
  120. Shift-Alt) then we can configure the key so that the Control qualifier
  121. outputs the value that would appear without the Control key being pressed,
  122. but with bits 6 and 7 cleared (eg Control-c). Confused? You're not the only
  123. one... But playing around with EditKeys should make all this clear (or at
  124. least clearer than it is at present).
  125.  
  126. It is worth noting before I start on a discussion of EditKeys that once you
  127. have loaded a keymap into the system, you cannot replace it with another
  128. of the same name using SetMap or SetKeyboard. This is because the system
  129. expects keymaps not to change. The solution to this is to use the supplied
  130. 'LoadKeymap' command.
  131.  
  132. The Program
  133. -----------
  134.  
  135. EditKeys allows you to modify all the above features of a keymap. Keys may be
  136. made DEAD or MODIFIABLE, or have STRING definitions put on them, as well as
  137. being redefined. The program may be started from CLI or Workbench:
  138.  
  139. From Workbench: Just double click on the program's icon. A file requester
  140.         will appear for you to select a keymap to load. Click on
  141.         a keymap or 'Cancel'.
  142.  
  143. From CLI:    1) Just type the program's name, ie
  144.  
  145.             1> EditKeys
  146.  
  147.         The program will attempt to display a file requester
  148.         prompting you for a keymap to load. Select a keymap or
  149.         click on 'Cancel' to start the program without a keymap
  150.         loaded. Or,
  151.  
  152.         2) Pass a keymap name to the program, ie.
  153.  
  154.             EditKeys [<keymap>] [NOMAP]
  155.  
  156.            eg    1> EditKeys gb
  157.            or    1> EditKeys NOMAP
  158.  
  159.         You do not need to specify the path of the keymap as
  160.         EditKeys will automatically look in DEVS:keymaps/. If
  161.         you specify the NOMAP option then EditKeys will start
  162.         without loading a keymap. Or,
  163.  
  164.         3) Enter the line
  165.  
  166.             1> EditKeys ?
  167.  
  168.         Which will bring up a template. Entering a further ? will
  169.         prompt you with a small help message. Enter a keymap name
  170.         or NOMAP (see above).
  171.  
  172. When the program has loaded it will open a window on the Workbench screen.
  173. In the titlebar is the name of the keymap being edited; below that is a
  174. representation of the A500/A2000/A1200 keyboard with the keymap you chose.
  175. Note that it may appear to you that the keyboard has acquired two extra keys
  176. (one to the right of the left Shift key and the other to the left of the
  177. Return key), as these are not present on the older UK and US Amigas.
  178.  
  179. Furthermore, the representation of the keymap usually shows what is output
  180. by that key, but for certain keys (eg Esc, Help, Del, F1-F10) I have chosen
  181. to use a little graphic which never changes as this looks better. If you need
  182. to be certain what a key outputs, click on it; its output will be displayed
  183. at the bottom to the EditKeys window.
  184.  
  185. Qualifier keys (Shift etc.) displayed on the screen work as expected; click
  186. on Shift to see the effect. The program is run using the menus and the five
  187. mode gadgets displayed below the keyboard; each gadget represents a different
  188. aspect of the keymap that can be edited. To choose a mode, simply click on
  189. its gadget. The five modes are:
  190.  
  191.     Keymap       - Used to (re)define output of any key
  192.     Capsable   - Used to determine which keys are capsable
  193.     Repeatable - Used to determine which keys repeat
  194.     Modifiable - Used to define which keys are modifiable
  195.     Deadkeys   - Used to define dead keys
  196.  
  197. I will deal with these sections in increasing order of complexity.
  198.  
  199. Capsable
  200. --------
  201.  
  202. As explained above, physical keys can be CAPSABLE or not, and this mode lets
  203. you set this function for each physical key. If the key is highlighed then
  204. that key is capsable; if it is not then the physical key isn't. The qualifier
  205. gadgets are ghosted as they serve no purpose in this mode. Simply click on a
  206. key with the mouse to change it's state.
  207.  
  208. Repeatable
  209. ----------
  210.  
  211. Basically the same as the above Capsable mode, except that this mode is used
  212. to control which keys are REPEATABLE or not. Works in exactly the same way as
  213. above.
  214.  
  215. Deadkeys
  216. --------
  217.  
  218. As expained above, keymaps can contain DEAD keys, and this mode allows you to
  219. set them. Click on a key to make it dead or turn it back to normal. Deadkeys
  220. don't do anything immediately when pressed; thus when you turn a dead back to
  221. normal the key is blank. Since each particular key can be DEAD or not, the
  222. qualifiers are active.
  223.  
  224. If you make a key dead, and the physical key that key is on already has
  225. another deadkey, then you can make the second deadkey act in the same way as
  226. the first. This isn't too useful, but it's implemented in the CBM keymaps, so
  227. here it is.
  228.  
  229. Deadkey definitions are stored within the keymap in a completely diffent way
  230. to ordinary keys, so if a physical key has deadkeys on it, then it can be
  231. defined for any combination of qualifiers. As expained earlier, this is not
  232. so for ordinary keys. If you turn a deadkey back to normal and it is the last
  233. deadkey on that physical key, EditKeys will try to resolve this without
  234. destroying any definitions; but if it can't a requester will appear asking
  235. you which definitions you want to get rid of. As a general rule the least
  236. useful set of definitions are those with the Control qualifier, so I'd remove
  237. these first if I were you, but it's your choice. As also explained above, if
  238. a normal key has definitions for Shift, Alt and Shift-Alt, then the Control
  239. key may have a special effect on it - it may clear bits 6&7 of the normaly
  240. output character (eg if you enter Control-c in the string gadget, you get
  241. a capital C in reverse (try it and see)). If it is possible to do this with
  242. the key as we convert it from dead to normal, a requester will appear asking
  243. whether you want this feature or not (As a general rule, in the CBM supplied
  244. keymaps it is turned on for most alphabetic keys).
  245.  
  246. You can have a maximum of 15 deadkeys, a limitation imposed by the keymap,
  247. not me. 15 should be enough anyway. If you define 15 diffent deadkeys then
  248. all non-dead keys will be ghosted as no more can be defined. Turn a deadkey
  249. back to a normal key to de-ghost all the other keys. Physical keys with
  250. STRING keys on them cannot also have DEAD keys on them; thus all string keys
  251. are ghosted and unselectable. Physical keys with MODIFIABLE keys on them may
  252. also have DEAD keys on them.
  253.  
  254. Modifiable
  255. ----------
  256.  
  257. This mode works in exactly the same way as the above 'Deadkeys', except that
  258. it allows you to select which keys are MODIFIABLE. Note that I have imposed
  259. an arbitrary limit of 256 modifiable keys in any one keymap, but I doubt that
  260. you would ever need anything like this figure.
  261.  
  262. Keymap
  263. ------
  264.  
  265. This is the mode you will probably most often use; it allows you to redefine
  266. what each key outputs when pressed. Since this bit is quite complex, I'll
  267. split it into several sections.
  268.  
  269. Click on the qualifiers and a key to select which key you want to edit. The
  270. selected key will appear highlighted (ie yellow lettering on a black
  271. background), and the cursor in the string gadget below the keyboard will
  272. activate. If you now type something, it will appear in this gadget (since it
  273. is just an Intuition string gadget you can also just click inside it to
  274. re-activate it). There are various types of keys in a keymap (as detailed
  275. previously) so I shall explain how the editing fuctions affect each one:
  276.  
  277. Deadkeys    - Since deadkeys do not output anything themselves but change
  278.           the output of other keys, you cannot edit a deadkey and so
  279.           such keys are ghosted in this mode. However they are used
  280.           in conjuction with modifiable keys (see section below).
  281.           Since physical keys with deadkeys on them may also have
  282.           keys that work normally (eg Alt-f is a deadkey; Shift-f and
  283.           f just work as normal) such keys (eg f) can be edited as
  284.           detailed below with the restriction that such keys may NOT
  285.           have strings on them.
  286.  
  287. Ordinary keys    - This is the majority of keys, which have no special
  288.           features (eg deadkeys). When you click on such a key, the
  289.           character output by this key will appear in the little box
  290.           to the left of the string gadget below the keymap.
  291.  
  292.           If you enter a single character into the string gadget,
  293.           then this will become the character output by the selected
  294.           key, and the picture of the keymap will change to reflect
  295.           this. As not all combinations of qualifier and physical key
  296.           can be uniquely redefined, at certain times (especially if
  297.           you edit a key with the Control qualifier (eg Control-q)) a
  298.           requester will appear telling you that some definitions
  299.           will have to be lost in order to allow your editing, and
  300.           giving you the option of aborting or letting EditKeys
  301.           remove some of the other definitions on that physical key.
  302.  
  303.           Futhermore, the combination of Shift-Alt-Control-key cannot
  304.           be defined at all for ordinary keys. If you try this
  305.           EditKeys will tell you that this is not possible.
  306.  
  307.           If you enter more than one character into the string
  308.           gadget, EditKeys will convert that key into a STRING type
  309.           key (see below).
  310.  
  311. Modifiable keys - Modifiable keys (eg a) can have their output modified by
  312.           deadkeys (eg Alt-f followed by a produces á). Such keys
  313.           can be edited as above except that strings are not
  314.           permissible on such keys, thus you can redefine what 'a'
  315.           outputs. But what if you want to redefine what Alt-f
  316.           followed by 'a' outputs?
  317.  
  318.           If you double click the right mouse button, a requester
  319.           titled 'Select deadkey' will appear. This allows you to
  320.           choose a deadkey to be used in editing modifiable keys.
  321.           The requester has gadgets to accept the current deadkey,
  322.           quit without changing anything, or clearing the current
  323.           deadkey. To select a deadkey simply type it in at the
  324.           keyboard (eg hold down Alt and press f). The text 'A-f'
  325.           will appear in the box. Enter another deadkey if you want
  326.           to change or press the 'Clear' gadget if you don't want to
  327.           use a deadkey anymore, then click 'Use this deadkey'. The
  328.           name of the deadkey (eg A-f (which is short for Alt-f))
  329.           will now appear in the far left box at the bottom of the
  330.           EditKeys window. Now click on a modifiable key (eg a) and
  331.           the character output by the combination of the selected
  332.           deadkey and the selected modifiable key will appear in the
  333.           box to the left of the string gadget (if you are using my
  334.           example an 'á' will appear there). Now when you enter a
  335.           character into the string gadget will edit what is output
  336.           by the combination of the selected deadkey and the selected
  337.           modifiable key. Try it - it is fairly obvious once you're
  338.           used to it.
  339.  
  340. String keys    - Lastly, string keys. If you click on a string key (or
  341.           change an ordinary key into one by entering more than one
  342.           character into the string gadget) then the box to the left
  343.           of the string gadget turns yellow. String keys may be
  344.           edited in the normal way, except that you may enter up to
  345.           32 characters to be output by each key (Some keymaps seem
  346.           to have more than this, but the RKM seems to suggest 32 is
  347.           the safe limit for the console buffer, so 32 it is).
  348.  
  349.           Note that string keys are usually displayed by EditKeys on
  350.           its picture of the keymap as the letters 'STR' where
  351.           possible (eg 'Help' is a string key but it always appears
  352.           as 'Help' in the little picture as this looks neater).
  353.  
  354.           If you edit a physical key with strings on it so that each
  355.           string is only one character, EditKeys will give you the
  356.           option of converting that physical key back to an ordinary
  357.           key (which saves memory). As usual, EditKeys may have to
  358.           remove some definitions to accomodate this; a requester
  359.           will appear to warn you if this is the case.
  360.  
  361.           Note that if at any time you want to put a carriage return
  362.           in a string, click on the 'Return' gadget (shaped like the
  363.           arrow on the Return key, to the right of the <CSI> gadget).
  364.           Depending on the AmigaDOS version being used, a little
  365.           square box or a reversed 'M' will be added onto the end of
  366.           the string in the string gadget. This is useful for eg.
  367.           putting common CLI commands on function keys. Thus, if you
  368.           put
  369.  
  370.             list*
  371.  
  372.           (where * represents the return character) on F1, then with
  373.           this keymap in use, pressing F1 will send a list command
  374.           to the CLI as if you had typed it in and pressed <RETURN>.
  375.  
  376. There is one further point - to the right of the string gadget is a gadget
  377. marked <CSI>. What does this mean? Well, if you click a key such as F1 (with
  378. a standard CBM keymap loaded), you will get something like *0~ where * is a
  379. little square box. This box is used for characters that are not specifically
  380. defined for that font, and in this case the character is $9B hex, which is
  381. known as the 'Control Sequence Inducer', or CSI for short. A CSI is used to
  382. indicate that what follows is not to be output directly but is to be
  383. interpreted by the Amiga to eg. change the text colour etc. There are too
  384. many sequences to document here (they are in the RKM under 'console.device').
  385.  
  386. Since you can't enter a CSI directly, clicking on the <CSI> gadget will add
  387. a CSI to the current string in the string gadget. The CSI may be the single
  388. character $9B, or the two character sequence $1B followed by $5B (<Esc>[).
  389. The former is used eg. in keymaps to define function keys, while the latter
  390. is used eg. in 'Echo' statements to change the text colour. The type of CSI
  391. provided by the <CSI> gadget is determined in the 'Options' menu (See the
  392. section below on the menus).
  393.  
  394. The Menus
  395. ---------
  396.  
  397. The remaining functions of EditKeys are accessed through the pull-down
  398. menus. Under AmigaDOS2 or higher, help is available by highlighting a menu
  399. item with the right mouse button, then pressing the 'Help' key. The menu
  400. items available are:
  401.  
  402.  Project Menu
  403.  ------------
  404.  
  405. New     - Completely clears all information from EditKeys, so allowing you
  406.        to create a keymap completely from scratch (but believe me, it's
  407.        easier to edit an existing one).
  408.  
  409. Load     - A file requester appears to allow you to select a keymap to load
  410.        in. Note that the keymap does not have to be in DEVS:keymaps/ for
  411.        to you to be able to load it in.
  412.  
  413. Save     - Saves the current keymap. The keymap is saved to the name of the
  414.        keymap last loaded. Note that any previous keymap of the same
  415.        name is overwritten (so be carefull!).
  416.  
  417. Save As  - A file requester appears to allow you to select the filename that
  418.        you wish the current keymap to be saved to. Again, you do not
  419.        need to save to the DEVS:keymaps/ directory, but if you don't,
  420.        you won't be able to load the keymap into the system without
  421.        using the supplied 'LoadKeymap'.
  422.  
  423. Test     - A window opens into which you can type. The keymap for this
  424.        window is that currently being edited by EditKeys, giving a much
  425.        easier way to test your new keymap than messing around with
  426.        SetMap etc. To close this window type 'quit' on a new line. Make
  427.        sure your keymap has 'q','u','i', and 't' defined else you cannot
  428.        quit without going back into EditKeys and defining these keys
  429.        somewhere. This window is asynchronous to the main window, which
  430.        still accepts input while the test window is open. If you
  431.        reselect the 'Test' option with the window active, then the
  432.        keymap in the test window is updated to that currently in
  433.        EditKeys.
  434.  
  435. Put Char - A requester appears into which you can input the decimal value of
  436.        any character, which is then added to the main string gadget.
  437.        This is very useful for adding characters which are not mapped
  438.        onto the current keymap.
  439.  
  440. About     - Guess.
  441.  
  442. Sleep     - Since the EditKeys window is rather large, you can use this
  443.        option to shrink EditKeys out of the way. Under AmigaDOS 1.3,
  444.        EditKeys opens a tiny window with just one gadget in it. Click on
  445.        this gadget to make EditKeys reopen its main window and resume
  446.        normal operations.
  447.        Under AmigaDOS2+, this option closes the main EditKeys window
  448.        and adds an 'EditKeys' menu item to the Workbench Tools menu. If
  449.        you select this item EditKeys will restart.
  450.  
  451. Quit     - Guess... A requester checks that you are sure before quiting (Any
  452.        unsaved keymaps will be lost if you quit!).
  453.  
  454.  Options Menu
  455.  ------------
  456.  
  457. This menu allows you to alter certain aspects of EditKeys operation.
  458. The available switches are:
  459.  
  460. One char. CSI - These two options are mutually exclusive and control the
  461. Two char. CSI    type of CSI produced by the <CSI> gadget. See the text
  462.         about the <CSI> gadget in the 'Keymap' section above.
  463.  
  464. Create Icons? - Under AmigaDOS 2.1 and higher keymaps now have icons. If
  465.         this switch is enabled then the 'Save As' command will
  466.         also write out an icon to accompany the keymap, if the
  467.         keymap does not already have an icon. The icon is the
  468.         standard system icon for keymaps. This option is off by
  469.         default.
  470.  
  471. Well, I think that's it. I think (hope!) the program is easier to use than
  472. this file is to understand, so just use EditKeys and all should become clear.
  473.  
  474. If for any reason you want to contact me about EditKeys, I can be
  475. contacted via
  476.  
  477. Internet Email:        kinder@teaching.physics.ox.ac.uk
  478.             david.kinder@physics.ox.ac.uk
  479.  
  480. Postal mail:        2, Clwtt Cottages,
  481.             Bangor Road,
  482.             Gyfelia,
  483.             Nr. Wrexham,
  484.             Clwyd, LL13 0YL.
  485.             ENGLAND.
  486.  
  487. Thanks to
  488. ---------
  489.  
  490. In no particular order:
  491.  
  492. HiSoft, Commodore, Oriel, Pink Floyd, The Sisters of Mercy, Curve, and NIN.
  493.  
  494. History   (² only applies to AmigaDOS2 or higher.)
  495. -------   (³ only applies to AmigaDOS3 or higher.)
  496.  
  497. v1.0      First release.
  498.  
  499. v1.1    ² Improved appearance under AmigaDOS2.
  500.  
  501. v1.2      Renamed 'Iconify' menu option to 'Sleep' to reflect that with
  502.       AmigaDOS2+ 'Sleep' closes EditKeys down to an item in the
  503.       Workbench Tools menu.
  504.     ² Removed need for 'arp.library' under AmigaDOS2+.
  505.  
  506. v1.3      Added 'Return' gadget.
  507.       Modified 'Project' menu; the shortcut for 'Sleep' is now
  508.       Right-Amiga-Z (Zzz...).
  509.       EditKeys now behaves itself if the default font is not topaz/8.
  510.       Added 'CSI Type' menu, <CSI> gadget now produces both types of CSI.
  511.     ² Program now quits with an explanation if 'asl.library' is not
  512.       available.
  513.     ² Improved 'Sleep'; if Workbench is not loaded then EditKeys opens
  514.       a small window as for AmigaDOS 1.3.
  515.     ² Corrected argument parser routine.
  516.     ² EditKeys window now has a zoom gadget.
  517.     ² Menu help implemented.
  518.  
  519. v1.4      New 'Project' menu option - 'Test'.
  520.       Changed 'CSI Type' menu to 'Options', and added new switch to
  521.       the menu - 'Create Icons'.
  522.     ² If Workbench not loaded 'Sleep' shrinks EditKeys to zoomed state.
  523.     ² Menu help for menu headers.
  524.     ² Yes/No requesters now use screen font.
  525.     ³ Menus have correct new look.
  526.  
  527. v1.5    ² Menu help and file requesters work with zoom gadget.
  528.     ² Menus improved slightly.
  529.       If EditKeys is not sure if a file is really a keymap, you are
  530.       prompted to make sure that you want to load the file.
  531.  
  532. v1.6      If 'Create Icons' is selected, a new icon will only be written if
  533.       one does not currently exist.
  534.       New 'Project' menu option - 'PutChar'.
  535.  
  536. v1.61      Removed Enforcer hit.
  537.  
  538. v1.62      Removed more Enforcer hits which occured if there was an error
  539.       while loading a keymap at startup.
  540.  
  541. v1.63    ³ Gadgets are ghosted with the correct colours for AmigaDOS3+.
  542.     ² Menu help text corrected.
  543.       Changed initial window position.
  544.  
  545.       "Rise and Reverberate"
  546.  
  547.